import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

class Solution1 {
    public List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> ret = new ArrayList<>();
        if(root == null) {
            return ret;
        }
        Queue<Node> q = new LinkedList<>();
        q.add(root);

        while(!q.isEmpty()) {
            int size = q.size();
            List<Integer> tmp = new ArrayList<>(); //统计本层的个数

            for(int i = 0; i < size; i++) {
                Node t = q.poll();
                tmp.add(t.val);
                for(Node child : t.children) {
                    if(child != null) {
                        q.add(child);
                    }
                }
            }
            ret.add(tmp);
        }
        return ret;
    }
}